# -*- coding: utf-8 -*-

import oss2
from utils.time_util import *


# 阿里云操作oss，默认使用上海，applesay-ai
class OssHelper:
    def __init__(self, access_key_id='access_key_id', access_key_secret='access_key_secret',
                 endpoint='oss-cn-shanghai.aliyuncs.com', bucket_name='bucket_name'):
        self.access_key_id = access_key_id
        self.access_key_secret = access_key_secret
        self.endpoint = endpoint
        self.bucket_name = bucket_name
        # 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
        self.auth = oss2.Auth(self.access_key_id, self.access_key_secret)
        # yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1（杭州）为例，Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
        # 填写Bucket名称。
        self.bucket = oss2.Bucket(self.auth, self.endpoint, self.bucket_name)

    # 填写目录名称，目录需以正斜线结尾。
    def mkdir(self, dir_name: str):
        self.bucket.put_object(dir_name, '')

    # 上传文件
    def upload(self, oss_key, file):
        self.bucket.put_object(oss_key, file)
        return f"https://{self.bucket_name}.{self.endpoint}/{oss_key}"

    # ---------------以下是扩展方法---------------------
    # 创建临时目录
    def mkdir_temp(self, dir_name: str):
        self.bucket.put_object(f'temp/{dir_name}/', '')

    # 创建5个临时目录
    def mkdir_temps(self, dir_name: str, ):
        self.mkdir_draw(f'{dir_name}/{ymd_str()}/1')
        self.mkdir_draw(f'{dir_name}/{ymd_str()}/2')
        self.mkdir_draw(f'{dir_name}/{ymd_str()}/3')
        self.mkdir_draw(f'{dir_name}/{ymd_str()}/4')
        self.mkdir_draw(f'{dir_name}/{ymd_str()}/5')

    # 判断文件或目录是否存在，目录必须以斜杠结尾
    def object_exists(self, object_name):
        return self.bucket.object_exists(object_name)


if __name__ == '__main__':
    access_key_id = 'access_key_id'
    access_key_secret = 'access_key_secret'
    endpoint = 'oss-cn-beijing.aliyuncs.com'
    bucket_name = 'oss-test'
    oss = OssHelper(access_key_id, access_key_secret, endpoint, bucket_name)

    # 在根路径下创建文件夹 temp
    # res = oss.mkdir('temp/')

    desk_file_path_name = 'd:/test-11.html'
    # 将文本 d:/test-11.html 写入 /temp/test/test.html
    # oss.upload('temp/test/test.html', desk_file_path_name)

    oss_file_path_name = 'temp/test/test2.html'
    print(f'检查文件{oss_file_path_name}是否存在：{oss.object_exists(oss_file_path_name)}，如果已经存在将会被覆盖！')
    with open(desk_file_path_name, 'rb') as f:
        url = oss.upload(oss_file_path_name, f)
        print(f'url:{url}')


'''

# -*- coding: utf-8 -*-
import oss2
# 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1（杭州）为例，Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称，例如examplebucket。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')
# 填写待删除目录的完整路径，完整路径中不包含Bucket名称。
prefix = "log/"

# 删除目录及目录下的所有文件。
for obj in oss2.ObjectIterator(bucket, prefix=prefix):
    bucket.delete_object(obj.key)
'''
